
package com.x52im.rbchat.logic.alarm.model;

import com.x52im.rainbowchat.http.logic.dto.TimeToolKit;
import com.x52im.rbchat.logic.alarm.AlarmType;

   /**
	 * 首页通知数据的封装类（注意：此数据仅用于UI显示，无需赋予复杂业务逻辑）.
	 *
	 * 数据的唯一性：以目前的数据定义，alarmType + dataId 即可定位该对象。
	 *
	 * @author Jack Jiang
	 * @version 1.0
	 */
	public class AlarmDto
	{
		/** 首页"消息"item的类型 */
		private int alarmType = AlarmType.undefine;

		/** 首页"消息"item对应的数据id（可以保存该类alarm的唯一id） */
		private String dataId;

		/** 首页"消息"item的标题文本 */
		private String title = null;
		/** 首页"消息"item的内容文本 */
		private String alarmContent = null;
		/** 首页"消息"item的日期时间戳（GMT默认时区） */
		private long date = 0;//null;
		/** 首页"消息"item的未读数 */
		private String flagNum = null;

		/**
		 * 本字段不作固定用途，对于不同类型的item，具体存放的数据内容可能有所不同，本字段可为null，并非必须字段！
		 * <p>
		 * 本字段当前用途记录：<br>
		 * 【1】[v8.0]陌生人聊天消息时，存放的是对方头像文件名(md5的样式)，实现头像url相同情况下，在对方更新头像后能即时加载到新头像(而非仍用缓存)；
		 * 		该字段非必须，不为空时仅利于及时更新可能的最新头像而已，并无别的影响。
		 */
		private String extraString1 = null;

		/**
		 * 首页"消息"item是否需要置顶（默认false，true表示需要置顶）.
		 *
		 * 置顶标识为什么没像消息免打扰等字段那样用SharedPrefrence来存？
		 * 当前主要还是基于性能考虑，必竟一旦首页"消息"列表数据太多，SharedPrefrence的性能损耗适必会让列表滑动不够流畅。 */
		private boolean alwaysTop = false;

		/**
		 * 首页"消息"item是否需要显示"[有人@我]"提示标识（默认false，true表示需要显示）.
		 */
		private boolean atMe = false;

//		/**
//		 * 首页"消息"item是否显示"[草稿]"的提示标识（默认false，true表示需要显示）.
//		 */
//		private boolean hasDraft = false;

		public AlarmDto()
		{
		}

		public int getAlarmType()
		{
			return alarmType;
		}
		public void setAlarmType(int alarmType)
		{
			this.alarmType = alarmType;
		}

		public void setDataId(String dataId)
		{
			this.dataId = dataId;
		}
		public String getDataId()
		{
			return dataId;
		}

		public String getTitle()
		{
			return title;
		}
		public void setTitle(String title)
		{
			this.title = title;
		}
		public String getAlarmContent()
		{
			return alarmContent;
		}
		public void setAlarmContent(String alarmContent)
		{
			this.alarmContent = alarmContent;
		}

		public long getDate()
		{
			return date;
		}

        /**
         * date字段存放的是GMT+0时区的时间戳，UI显示时要转换成人类友好的形式哦.
         *
         * @return 转换成功则返回日期时间字串，否则返回空字符串""
         */
        public String getDateHuman()
        {
            return TimeToolKit.getTimeStringAutoShort2(TimeToolKit.getDateTime(date), false, false);
        }
		public void setDate(long date)
		{
			this.date = date;
		}

		public String getFlagNum()
		{
			return flagNum;
		}
		public void setFlagNum(String flagNum)
		{
			this.flagNum = flagNum;
		}

		public void setExtraString1(String extraString1)
		{
			this.extraString1 = extraString1;
		}
		public String getExtraString1()
		{
			return extraString1;
		}

		public boolean isAlwaysTop()
		{
			return alwaysTop;
		}

		public void setAlwaysTop(boolean alwaysTop)
		{
			this.alwaysTop = alwaysTop;
		}

		public boolean isAtMe() {
			return atMe;
		}

		public void setAtMe(boolean atMe) {
			this.atMe = atMe;
		}

//		public boolean isHasDraft() {
//			return hasDraft;
//		}
//
//		public void setHasDraft(boolean hasDraft) {
//			this.hasDraft = hasDraft;
//		}

		@Override
		public String toString ()
		{
			return "[AlarmMessageDto]messageType="+ alarmType
					+", dataId="+dataId
					+", title="+title
					+", alarmContent="+ alarmContent
					+", date="+date
					+", flagNum="+flagNum
					+", extraString1="+extraString1
					+", alwaysTop="+alwaysTop
					+", atMe="+atMe
//					+", hasDraft="+hasDraft
					;
		}
	}